package com.cyt.sys.service;

import com.cyt.base.model.dto.ReturnResult;

import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.model.po.SysFile;
import com.cyt.sys.model.vo.SysFileVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 *@Author: YuShengQiang 
 *@Date: 2018-12-04 10:32
 *@Description:基础部分附件service接口类
 */
public interface SysFileService extends BaseService<SysFile> {
    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-04 10:40
     *@Description:单个图片上传
     * @param file 文件对象
     * @param request 请求
     * @param catalog 文件保存自定义目录
     * @param objectId 文件保存objectId，空为自定义
     * @param memId 当前登录用户信息
     * @return
     */
    ReturnResult singleImage(MultipartFile file, HttpServletRequest request, String catalog, String objectId, String memId);


    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-04 10:40
     *@Description:单个附件上传
     * @param file 文件对象
     * @param request 请求
     * @param catalog 文件保存自定义目录
     * @param objectId 文件保存objectId，空为自定义
     * @param memId 当前登录用户信息
     * @return
     */
    ReturnResult singleFile(MultipartFile file, HttpServletRequest request, String catalog, String objectId, String memId);

    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-04 10:40
     *@Description:文本编辑器图片上传
     * @param file 文件对象
     * @param request 请求
     * @param catalog 文件保存自定义目录
     * @param objectId 文件保存objectId，空为自定义
     * @param memId 当前登录用户信息
     * @return
     */
    ReturnResult layEditUpload(MultipartFile file, HttpServletRequest request, String catalog, String objectId,  String memId);

    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-04 10:40
     *@Description:删除附件
     * @param objectId 文件保存objectId，空为自定义
     * @return
     */
    ReturnResult deleteByobjectId(String objectId);

    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-04 10:40
     *@Description:根据id删除附件
     * @param id 主键
     * @return
     */
    ReturnResult deleteById(HttpServletRequest request, String id);
    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-05 14:58
     *@Description:
     * @param sysFileVo 对象
     */
    ReturnResult list(SysFileVo sysFileVo);
    /**
     * 根据附件objectId预览/下载第一个附件
     *
     * @param objectId 附件objectId
     * @return
     * @author shengQiang yu
     * @date 2019-06-26 16:36
     */
    void showFileByObjectId(HttpServletResponse response,HttpServletRequest request,String objectId) throws IOException;
    /**
     * 根据附件id预览/下载附件
     *
     * @param fileId 附件id
     * @return
     * @author shengQiang yu
     * @date 2019-06-26 16:36
     */
    void showFileById(HttpServletResponse response, HttpServletRequest request, String fileId) throws IOException;
    /**
     * 根据路径预览/下载附件
     *
     * @param path 附件路径
     * @return
     * @author shengQiang yu
     * @date 2019-06-26 16:36
     */
    void showFileByPath(HttpServletResponse response, HttpServletRequest request, String path) throws IOException;
    /**
     * 附件下载
     *
     * @param id 附件id
     * @return
     * @author shengQiang yu
     * @date 2019-03-07 17:10
     */
    void download(HttpServletResponse response, HttpServletRequest request, String id);
    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-05 14:58
     *@Description: 查询对象集合
     * @param sysFileVo
     * @return
     */
    List<SysFile> listExample(SysFileVo sysFileVo);
    /**
     * @param imgBase64URL    图片Base64字符串
     * @param request         请求
     * @param catalog         文件保存自定义目录
     * @param objectId        文件保存objectId，空为自定义
     * @param fileType      图片类型如：png,jpg等
     * @param  memId      当前登录用户信息
     * @return
     * @Author: YuShengQiang
     * @Date: 2018-12-04 10:40
     * @Description:图片Base64上传
     */
    ReturnResult imageBase64Upload(String imgBase64URL, HttpServletRequest request, String catalog, String fileType, String objectId, String memId);
    /**
     * @param imgBase64URL    图片Base64字符串
     * @param request         请求
     * @param catalog         文件保存自定义目录
     * @param fileType      图片类型如：png,jpg等
     * @return
     * @Author: YuShengQiang
     * @Date: 2018-12-04 10:40
     * @Description:图片Base64上传
     */
    ReturnResult imageBase64Upload(String imgBase64URL, HttpServletRequest request, String catalog, String fileType);
    /**
     *@Author: YuShengQiang
     *@Date: 2018-12-04 10:40
     *@Description:附件上传
     * @param file 文件对象
     * @param request 请求
     * @param catalog 文件保存自定义目录
     * @param requestFileType 文件要求类型：1、图片 ，空为不做要求
     * @return
     */
    ReturnResult fileUpload(MultipartFile file, HttpServletRequest request, String catalog, String requestFileType);

    /**
     * @Author sunli
     * @date  2019-04-12
     * @param request
     * @param id 附件id
     * @return
     */
    ReturnResult conversionFile(HttpServletRequest request, String id);

    /**
     * 根据条件获取单个附件信息
     *
     * @param sysFileVo 参数传入对象
     * @return SysFile
     * @author rong yuan
     * @date 2019/8/12 10:41
     */
    SysFile selectOneByExample(SysFileVo sysFileVo);
}